package gatperdut.chato.core.messaging.packagers;

import gatperdut.chato.core.keywords.KeywordsController;
import gatperdut.chato.core.messaging.packagers.ItemTemplatesPackager.ItemTemplateJSONAttr;
import gatperdut.chato.model.Chato.Item.Item;

import java.util.Arrays;

import org.json.simple.JSONObject;

public class ItemsPackager extends GenericPackager<Item> {

    public static enum ItemJSONAttr {
        ID("id"), SHORT_DESC("short_desc"), LONG_DESC("long_desc"), FULL_DESC("full_desc"), KEYWORDS("keywords"), W("w");

        private final String name;

        private ItemJSONAttr( String name ) {
            this.name = name;
        }

        public String getName() {
            return name;
        }
    };

    @Override
    public Item[] toArray( Object[] objectsArray ) {
        return Arrays.copyOf( objectsArray, objectsArray.length, Item[].class );
    }

    @SuppressWarnings( "unchecked" )
    @Override
    public JSONObject packageOne( Item item ) {
        JSONObject itemJO = new JSONObject();

        itemJO.put( ItemTemplateJSONAttr.ID.getName(), item.cdoID().toURIFragment() );
        itemJO.put( ItemTemplateJSONAttr.SHORT_DESC.getName(), item.getShortDesc() );
        itemJO.put( ItemTemplateJSONAttr.LONG_DESC.getName(), item.getLongDesc() );
        itemJO.put( ItemTemplateJSONAttr.FULL_DESC.getName(), item.getFullDesc() );
        itemJO.put( ItemTemplateJSONAttr.KEYWORDS.getName(), KeywordsController.toJSONArray( item.getKeywords() ) );
        itemJO.put( ItemTemplateJSONAttr.W.getName(), item.getW() );

        return itemJO;
    }

}
